import {BizError} from '../exception/exceptions'
import api from './impl/axios_api_instance'
import {loginOut, notToJoinTeam, remoteLogin} from '../auth_util'
import {Toast} from 'vant'
import store from '@/repo/store/store'
import rest from './rest'
import {getCookie} from "as-common";

function postApiNew(data) {
  if (!data) {
    console.error('post api data cannot be null');
    return
  }

  data.requestData = data.requestData || {};
  data.requestData.timestamp = new Date().getTime();

  data.userid = store.getters.userid || 0;
  data.tsId = store.getters.hsId || 0;

  let enterpriseInfo = getCookie('web-hft-ee/enterpriseInfo');
  data.enterpriseId = enterpriseInfo ? enterpriseInfo.enterprise.id : '';

  return postNew(`${rest.apiHost}/mobile/apisFlux`, [data]).then(result => {
      let response = result[0] || {};
      let resultCode = response.hasOwnProperty('resultCode') ? response.resultCode : -1;
      if (resultCode === 0) {
        return Promise.resolve(response)
      }
      switch (resultCode) {
        case 11:  //异地登录
          remoteLogin();
          break;
        case -1:
          Toast('empty result code');
          break;
        case 2:  //这个是一个普通的接口报错。
          Toast(response.resultInfo);
          break;
        case 40:  //这个接口退出用户。 服务器异常，没有购买团队服务
          // Toast(response.resultInfo);
          // loginOut();
          break;
        case 41:  //未加入团队 Not On The Team
          console.log(response.resultInfo);
          // Toast(response.resultInfo);
          notToJoinTeam();
          break;
        case 28:  //加入企业时已经加入企业

          break;
        default:
          Toast(response.resultInfo);
          break
      }
      return Promise.reject(new BizError(result))
    }
  )
}

/**
 * 三种情况，
 * 1. 不需要登录， 没有企业
 * 2. 需要登录，  没有企业
 * 3. 需要登录，   有企业
 * */


export default postApiNew
///后台使用流模式返回数据，如果有多个请求[req,req]一起发送，
// 后台会一个个返回，前端需要自己处理，所以postApiNew直接只发单个请求，没必要发多个
/*export*/
function postNew(url, data) {
  return api.postNew(url, data).then(res => res.data || [])
}
